# Cluster命令
# CLUSTER COUNTKEYSINSLOT
# 语法
CLUSTER COUNTKEYSINSLOT slot
# 描述
返回指定哈希槽中的键数量。该命令仅查询本地数据集,因此如果请求的节点并不负责该哈希槽,返回的计数将始终为零
# 参数
- slot
需要统计键数量的哈希槽
# 示例
> CLUSTER COUNTKEYSINSLOT 7000
(integer) 50341
# CLUSTER FAILOVER
# 语法
CLUSTER FAILOVER [FORCE | TAKEOVER]
# 描述
该命令只能发送给的副本节点,它会强制该副本节点对其主节点发起手动故障转移
# 参数
- FORCE | TAKEOVER
FORCE模式会在不通知主节点的情况下直接启动故障转移,主要用于主节点已经失联的场景。而 TAKEOVER模式则更进一步,它连集群授权故障转移所需的共识机制都会直接跳过
# CLUSTER GETKEYSINSLOT
# 语法
CLUSTER GETKEYSINSLOT slot count
# 描述
该命令会返回当前联系节点上、且哈希到指定槽的键名。可以使用 count 参数来限制返回的键的数量,从而实现对键的批量处理
# 参数
- slot
需要统计键数量的哈希槽
- count
返回的键名最大数量
# 示例
> CLUSTER GETKEYSINSLOT 7000 3
1) "key_39015"
2) "key_89793"
3) "key_92937"
# CLUSTER KEYSLOT
# 语法
CLUSTER KEYSLOT key
# 描述
该命令会返回一个整数,代表指定键(key)经过哈希计算后所属的哈希槽(hash slot)。此命令主要用于调试和测试。该命令的典型应用场景包括:
- 客户端库开发者可以使用此命令来验证他们自己实现的哈希算法是否正确。具体做法是生成随机键,分别用本地算法和 CLUSTER KEYSLOT 命令进行哈希计算,然后比对两者的结果是否一致
- 运维人员可以使用此命令来查看某个特定键属于哪个哈希槽,进而确认负责处理该键的 Cluster 节点是哪一个
# 参数
- key
键名
# 示例
> CLUSTER KEYSLOT somekey
(integer) 11058
> CLUSTER KEYSLOT foo{hash_tag}
(integer) 2515
> CLUSTER KEYSLOT bar{hash_tag}
(integer) 2515
# CLUSTER NODES
# 语法
CLUSTER NODES
# 描述
集群中的每个节点都有自己对当前集群配置的理解,这包括它所知道的节点集合、与这些节点的连接状态、各个节点的标志、属性以及分配的哈希槽等信息
# 示例
07c37dfeb235213a872192d90877d0cd55635b91 127.0.0.1:30004@31004,hostname4 slave e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 0 1426238317239 4 connected
67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 127.0.0.1:30002@31002,hostname2 master - 0 1426238316232 2 connected 5461-10922
292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 127.0.0.1:30003@31003,hostname3 master - 0 1426238318243 3 connected 10923-16383
6ec23923021cf3ffec47632106199cb7f496ce01 127.0.0.1:30005@31005,hostname5 slave 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 0 1426238316232 5 connected
824fe116063bc5fcf9f4ffd895bc17aee7731ac3 127.0.0.1:30006@31006,hostname6 slave 292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 0 1426238317741 6 connected
e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 127.0.0.1:30001@31001,hostname1 myself,master - 0 0 1 connected 0-54602"
<id> <ip:port@cport[,hostname]> <flags> <master> <ping-sent> <pong-recv> <config-epoch> <link-state> <slot> <slot> ... <slot>
# CLUSTER SLOTS
# 语法
CLUSTER SLOTS
# 描述
CLUSTER SLOTS 命令会返回集群哈希槽,该命令非常适合由 Cluster 客户端库的实现代码来调用,用于获取集群哈希槽与实际节点网络信息之间的映射关系。这样一来,当接收到客户端命令时,就能将其发送到最可能负责处理该命令中指定键的正确实例上
# 示例
> CLUSTER SLOTS
1) 1) (integer) 0
2) (integer) 5460
3) 1) "127.0.0.1"
2) (integer) 30001
3) "09dbe9720cda62f7865eabc5fd8857c5d2678366"
4) 1) hostname
2) "host-1.redis.example.com"
4) 1) "127.0.0.1"
2) (integer) 30004
3) "821d8ca00d7ccf931ed3ffc7e3db0599d2271abf"
4) 1) hostname
2) "host-2.redis.example.com"
2) 1) (integer) 5461
2) (integer) 10922
3) 1) "127.0.0.1"
2) (integer) 30002
3) "c9d93d9f2c0c524ff34cc11838c2003d8c29e013"
4) 1) hostname
2) "host-3.redis.example.com"
4) 1) "127.0.0.1"
2) (integer) 30005
3) "faadb3eb99009de4ab72ad6b6ed87634c7ee410f"
4) 1) hostname
2) "host-4.redis.example.com"
3) 1) (integer) 10923
2) (integer) 16383
3) 1) "127.0.0.1"
2) (integer) 30003
3) "044ec91f325b7595e76dbcb18cc688b6a5b434a1"
4) 1) hostname
2) "host-5.redis.example.com"
4) 1) "127.0.0.1"
2) (integer) 30006
3) "58e6e48d41228013e5d9c1c37c5060693925e97e"
4) 1) hostname
2) "host-6.redis.example.com"